package tipo;

import java.util.ArrayList;

public class RepositorioTipo implements ITipo{

	private static ArrayList<Tipo> listaTipos = new ArrayList<Tipo>();
	private static int contId = 1;
	private Tipo tipo;
	
	@Override
	public void adicionar(Tipo tipo) {
		tipo.setId(this.contId);
		this.listaTipos.add(tipo);
		this.contId++;
	}

	@Override
	public void editar(Tipo tipo) {
		this.tipo = pesquisar(tipo.getId());
		int index = listaTipos.indexOf(this.tipo);
		this.listaTipos.set(index, tipo);
		
	}

	@Override
	public void remover(int idTipo) {
		this.tipo = pesquisar(idTipo);
		this.listaTipos.remove(this.tipo);
	}

	@Override
	public int existe(int idTipo) {
		int res = 0;
		this.tipo = null;
		this.tipo = pesquisar(idTipo);
		if(this.tipo != null){
			res = 1;
		}
		return res;
	}

	@Override
	public Tipo pesquisar(int idTipo) {
		this.tipo = null;
		for (Tipo tipo : this.listaTipos) {
			if(tipo.getId() == idTipo){
				this.tipo = tipo;
				break;
			}
		}
		return this.tipo;
	}

	@Override
	public ArrayList<Tipo> listar() {
		return this.listaTipos;
	}

	@Override
	public ArrayList<Tipo> listar(String nome) {
		ArrayList<Tipo> tipos = new ArrayList<Tipo>();
		int tam = nome.trim().length();
		for(Tipo t :this.listaTipos){
			int	tamTipo = t.getNome().trim().length();
			String nomeTipo = t.getNome().trim().toLowerCase().substring(0, (tam <= tamTipo)? tam : tamTipo);
			if(nomeTipo.equals(nome.trim().toLowerCase())){
				tipos.add(t);
			}
		}
		return tipos;
	}

}
